/*
    模拟实现c标准库中的文件结构体和相关文件操作
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

//缓冲区的刷新规则标志
#define NONEFLUSH 0
#define LINEFLUSH 1
#define FULLFLUSH 2

#define N 4096
typedef struct MYFILE
{
    int fileno; //文件描述符指针
    char buf[N]; //c语言层的缓冲区
    int pos; //指向缓冲区下次存放数据的位置
    int flushtype; //刷新类型
}MYFILE;


MYFILE* myfopen(const char* filepath, const char* mode);
void myfclose(MYFILE*);
int myfread(void* bf, size_t size, size_t n, MYFILE* fp);
int myfwrite(const void* bf, size_t size, size_t n, MYFILE* fp);
void myfflush(MYFILE* fp);
